package zuo.from0516.other.day02;

/**
 * Q21：合并两个有序链表（简单）
 * 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
 */
public class Code07_MergeTwoSortedLinkedList {
    public ListNode mergeTwoLists(ListNode list1, ListNode list2){
        if(list1 == null || list2 == null){
            return list1 == null ? list2 : list1;
        }
        ListNode head = list1.val > list2.val ? list2 : list1;
        ListNode cur1 = head.next;
        ListNode  cur2 = list1 == head ? list2 : list1;
        ListNode cur = head;
        while(cur1 != null && cur2 != null){
            if (cur1.val < cur2.val){
                cur.next = cur1;
                cur1 = cur1.next;
            }else{
                cur.next = cur2;
                cur2 = cur2.next;
            }
            cur  = cur.next;
        }
        cur.next = cur1 == null ? cur2 : cur1;
        return head;
    }


}
